<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <!-- 
        垃圾回收机制:
        
        单线程：一次只能运行一个任务

        异步任务： 定时器  事件   ajax
            在程序执行的时候，如果是异步任务，把任务加入一个任务队列，如果任务需要被执行
            就会从任务队列里面弹出该任务，并执行，而不是一直等待
            
     -->
     <button>按钮</button>
    <script>
        //异步队列
        //绑定的时候也是存在队列  当事件发生的时候，从事件队列里面出去该事件函数，并执行
        //事件执行完成之后，会继续加入事件队列，等待下次触发事件，然后执行
        document.querySelector("button").onclick=function()
        {
            alert("按钮点击了")
        }
        document.addEventListener('click',function(){
            alert('事件2')
        })
        document.addEventListener('click',function(){
            alert('事件3')
        })
        document.addEventListener('click',function(){
            alert('事件4')
        })


        //异步任务
        function foo()
        {
            console.log('foo in first');
        }
        foo()
        for(var i=0;i<1000;i++)
        {
            setTimeout(function(){
                console.log(i);
            })  
        }
        console.log('second after');
    </script>
    
</body>
</html>